package org.jeecg.modules.zcgl.service;

import com.baomidou.mybatisplus.extension.service.IService;
import org.jeecg.modules.zcgl.entity.CustomerBalance;
import org.jeecg.modules.zcgl.entity.CustomerBalanceChangesDetail;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Collection;
import java.util.List;

/**
 * @Description: 客户余额信息
 * @Author: jeecg-boot
 * @Date:   2020-12-11
 * @Version: V1.0
 */
public interface ICustomerBalanceService extends IService<CustomerBalance> {

	/**
	 * 添加一对多
	 * 
	 */
	public void saveMain(CustomerBalance customerBalance,List<CustomerBalanceChangesDetail> customerBalanceChangesDetailList) ;
	
	/**
	 * 修改一对多
	 * 
	 */
	public void updateMain(CustomerBalance customerBalance,List<CustomerBalanceChangesDetail> customerBalanceChangesDetailList);
	
	/**
	 * 删除一对多
	 */
	public void delMain (String id);
	
	/**
	 * 批量删除一对多
	 */
	public void delBatchMain (Collection<? extends Serializable> idList);

	/**
	 * 根据公司ID和用户ID查询
	 * @param companyId
	 * @param customerId
	 * @return
	 */
	CustomerBalance selectCustomerIdAndCompanyId(String companyId, String customerId);

	/**
	 * 根据合同ID和用户ID查询
	 * @param leaseContractId
	 * @param customerId
	 * @return
	 */
	CustomerBalance selectCustomerIdAndLeaseContractId(String leaseContractId, String customerId);


	/**
	 * 根据公司ID和用户ID查询余额
	 * @param companyId
	 * @param customerId
	 * @return
	 */
	BigDecimal selectBalanceCustomerIdAndCompanyId(String companyId, String customerId);

	/**
	 *
	 * 更新公司账户余额
	 * @param companyId
	 * @param customerId
	 * @param amountMoney
	 * @param type true：添加，false：减少
	 * @param handleId 操作对应数据ID：1、租金扣费（应收款项ID），2、预存缴费（预存缴费信息ID），3、租金退回（应收款项ID），4、手动调整(操作人员ID)
	 * @param handleType 操作类型：1、租金扣费，2、预存缴费，3、租金退回，4、手动调整
	 * @param description 描述说明
	 * @return
	 */
	boolean updateBalanceByCustomerIdAndCompanyId(String companyId, String customerId, BigDecimal amountMoney, boolean type, String handleId, Integer handleType, String description,String receivablesId);




	/**
	 *
	 * 更新合同账户余额
	 * @param companyId
	 * @param customerId
	 * @param amountMoney
	 * @param type true：添加，false：减少
	 * @param handleId 操作对应数据ID：1、租金扣费（应收款项ID），2、预存缴费（预存缴费信息ID），3、租金退回（应收款项ID），4、手动调整(操作人员ID)
	 * @param handleType 操作类型：1、租金扣费，2、预存缴费，3、租金退回，4、手动调整
	 * @param description 描述说明
	 * @return
	 */
	boolean updateBalanceByCustomerIdAndLeaseContractId(String companyId, String leaseContractId,String customerId, BigDecimal amountMoney, boolean type, String handleId, Integer handleType, String description,String receivablesId);


	/**
	 * 根据客户ID查询 并根据公司统计余额
	 * @param customerId
	 * @return
	 */
	List<CustomerBalance> getByCustomerId(String customerId);
}
